package com.qf.dao;

import com.qf.pojo.User;
import org.springframework.data.r2dbc.repository.Modifying;
import org.springframework.data.r2dbc.repository.Query;
import org.springframework.data.repository.reactive.ReactiveCrudRepository;
import org.springframework.stereotype.Repository;
import org.springframework.stereotype.Service;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

/*
 *@Description:
 *@author:刘哥
 *@Date:86180 2022/9/22 19:52
 * 在jpa中,spring给我们提供了Repository可以帮我们简化sql的编写操作,
 * 在r2dbc中也可以使用,不过r2dbc的功能暂时不完整,部分操作可能无法使用
 */
@Repository//让spring创建当前的接口的对象,是一个代理对象
public interface UserMapper extends ReactiveCrudRepository<User,Integer> {

//    Mono<User> findById(Integer id);

    Flux<User> findByNameLike(String name);

    Mono<User> findByNameEquals(String name);

    Mono<Integer> deleteByNameEquals(String name);

    Mono<User> findFirstByNameLike(String name);

    @Modifying//代表这是一个修改语句
    @Query("update user set userName=#(#user.username),password=#(#user.password),phone=#(#user.phone),address=#(#address) where userId=#(#user.userId)")
    Mono<User> updateUserById(User user);




}
